﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Service
{
    public interface IManagerBase<T>
    {
        /// <summary>
        /// Ajoute un objet dans la base
        /// </summary>
        /// <param name="item">Objet à ajouter</param>
        void Add(T item);

        /// <summary>
        /// Modifie un objet dans la base
        /// </summary>
        /// <param name="item">L'objet à modifier</param>
        void Update(T item);

        /// <summary>
        /// Supprime l'objet souhaiter de la base
        /// </summary>
        /// <param name="item">L'objet à supprimer</param>
        void Delete(T item);

        /// <summary>
        /// Permet d'obtenir l'objet souhaité
        /// </summary>
        /// <param name="id">Id de l'objet que l'on souhaite obtenir</param>
        /// <returns>Un objet</returns>
        T Get(int id);

        /// <summary>
        /// Permet de requêter la liste d'objet exposée
        /// </summary>
        /// <returns>Un objet requêtable</returns>
        IQueryable<T> Query();
    }
}
